/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import pojo.Chitiethoadon;
import pojo.ChitiethoadonId;
import util.HibernateUtil;

/**
 *
 * @author kydrenw
 */
public class ChitiethoadonDAO {
     
    /**
     * Lấy thông tin chi tiết hóa đơn dực theo đối tượng ID truyên vào
     * @param id ID của chi tiết hóa đơn cần lấy
     * @return Đối tượng chứa thông tin chi tiết hóa đơn.
     *         Null nếu thất bại.
     */
    public static Chitiethoadon layThongTin(ChitiethoadonId id) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Chitiethoadon sp = (Chitiethoadon) session.get(Chitiethoadon.class, id);

        return sp;
    }
    
    /**
     * Lấy danh sách chi tiết hóa đơn
     * @return  Danh sách các hóa đơn tìm thấy.
     */
    public static List<Chitiethoadon> layDanhSach() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        String hql = "FROM Chitiethoadon";
        Query query = session.createQuery(hql);
        List<Chitiethoadon> ds = query.list();

        return ds;
    }
    
    /**
     * Đổi trạng thái của chi tiết hóa đơn sang trạng thái đã được duyệt
     * @param ct Đối tượng chi tiết hóa đơn
     * @return True nếu thành công, False nếu thất bại.
     */
    public static boolean duyetDon(Chitiethoadon ct) {
        if (ChitiethoadonDAO.layThongTin(ct.getId()) == null) {
            return false;
        }
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            Chitiethoadon chitiet = (Chitiethoadon) session.get(Chitiethoadon.class, ct.getId());
            chitiet.getTinhtrang().setMa(8);
            session.saveOrUpdate(chitiet);
            session.flush();
            session.getTransaction().commit();
            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            System.out.println(e);
            return false;
        } finally {

        }
    }
    
    /**
     * Đánh dấu chi tiết hóa đơn đã bị hủy
     * @param ct Đối tượng chi tiết hóa đơn
     * @return  True nếu thành công, false nếu thất bại
     */
    public static boolean huyDon(Chitiethoadon ct) {
        if (ChitiethoadonDAO.layThongTin(ct.getId()) == null) {
            return false;
        }
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            ct.getTinhtrang().setMa(10);
            session.saveOrUpdate(ct);
            session.flush();
            session.getTransaction().commit();
            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            System.out.println(e);
            return false;
        } finally {

        }
    }
    
    /**
     * Sửa thông tin của chi tiết hóa đơn
     * @param ct Đối tượng chi tiết hóa đơn cần cập nhật thông tin
     * @return true nếu thành công, false nếu thất bại
     */
    public static boolean suaDon(Chitiethoadon ct) {
        if (ChitiethoadonDAO.layThongTin(ct.getId()) == null) {
            return false;
        }
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.saveOrUpdate(ct);
            session.flush();
            session.getTransaction().commit();
            return true;
        } catch (Exception e) {
            session.getTransaction().rollback();
            System.out.println(e);
            return false;
        } finally {

        }
    }
}
